const ENUM_SHOW_TYPE = {
	LOADING: "loading",
	MESSAGE: "none",
	SUCCESS: "success",
	FAIL: "error"
}
/**
 * toast 展示
 */
function toastShow({
	type = ENUM_SHOW_TYPE.LOADING, // enum_show_type
	msg, // 文本
	image, // 图片 不为空的情况下，除loading外其他type统一为message
	mask = true, // 是否显示mask 拦截背景点击事件
	duration = 2500, // 显示时间，loading不响应
	callback, // show 回调 (success, data)
	complete, // show complete 回调
}) {
	let showParam = {
		title: msg,
		mask,
		success: (res) => {
			if (typeof callback == 'function') callback(true, res);
		},
		fail: (error) => {
			if (typeof callback == 'function') callback(false, error);
		},
		complete: (res) => {
			if (typeof complete == 'function') complete(res);
		}
	}
	if (type == ENUM_SHOW_TYPE.LOADING) {
		uni.showLoading({
			...showParam
		})
	} else {
		uni.showToast({
			...showParam,
			icon: type,
			image,
			duration,
		})
	}
}

function toastHide(param = {}) {
	const {
		type = ENUM_SHOW_TYPE.LOADING,
			callback,
			complete,
			conflict = true
	} = param;
	let hideParam = {
		noConflict: conflict,
		success: (res) => {
			if (typeof callback == 'function') callback(true, res);
		},
		fail: (error) => {
			if (typeof callback == 'function') callback(false, error);
		},
		complete: (res) => {
			if (typeof complete == 'function') complete(res);
		}
	}
	if (type == ENUM_SHOW_TYPE.LOADING) {
		uni.hideLoading(hideParam)
	} else {
		uni.hideToast(hideParam);
	}
}

function toastLoading(msg = '加载中') {
	toastShow({
		type: ENUM_SHOW_TYPE.LOADING,
		msg
	})
}

function toastSuccess(msg = '成功') {
	toastShow({
		type: ENUM_SHOW_TYPE.SUCCESS,
		msg
	})
}

function toastWarn(msg = '错误') {
	toastShow({
		type: ENUM_SHOW_TYPE.FAIL,
		msg
	})
}

function toastMessage(msg) {
	toastShow({
		type: ENUM_SHOW_TYPE.MESSAGE,
		msg
	})
}

module.exports = {
	ENUM_SHOW_TYPE, // LOADING SUCCESS, FAIL, MESSAGE
	toastShow, // toast 展示 loading 和 toast 同时只存在一个
	toastHide, // toast 隐藏
	toastLoading, // loading 显示（最大文本数量7个汉字）
	toastSuccess, // success 提示（最大文本数量7个汉字）
	toastWarn, // warn 提示 （最大文本数量7个汉字）
	toastMessage, // message 显示 （最大文本数量2行）
}